package com.somnus.androidkotlindemo.bean;

import android.databinding.BaseObservable;
import android.databinding.Bindable;


/**
 * Created by Somnus on 2018/6/20.
 * BaseObservable 提供了 notifyChange() 和 notifyPropertyChanged() 两个方法，
 * 前者会刷新所有的值域，后者则只更新对应 BR 的 flag，该 BR 的生成通过注释 @Bindable 生成，可以通过 BR notify 特定属性关联的视图
 *
 *
 * ****** 继承 Observable 局限性高，所以选择使用ObservableField,可以理解为对BaseObservable的注解和刷新等操作进行了封装。
 */

public class StaffBean extends BaseObservable {

    /**
     *-------------------------------------------------------------
     * a.如果是 public 修饰符，则可以直接在成员变量上方加上  @Bindable 注解
     *-------------------------------------------------------------
     */
    @Bindable
    public String staffName;

    /**
     * b.如果是private 修饰符，则在成员变量的 get 方法添加 @Bindable 注解
     */
    private int staffAge;

    private String staffNickName;

    //a.1
    public void setStaffName(String staffName) {
        this.staffName = staffName;
        //只更新本字段
        notifyPropertyChanged(com.somnus.androidkotlindemo.BR.staffName);
    }

    public int getStaffAge() {
        return staffAge;
    }

    public void setStaffAge(int staffAge) {
        this.staffAge = staffAge;
    }

    //b.2
    @Bindable
    public String getStaffNickName() {
        return staffNickName;
    }

    //b.1
    public void setStaffNickName(String staffNickName) {
        this.staffNickName = staffNickName;
        notifyChange();
    }
}
